package co.legu.carpool.autoCode.order.controller;

import co.legu.carpool.autoCode.order.entity.WorkOrder;
import co.legu.carpool.autoCode.order.service.IWorkOrderService;
import co.legu.carpool.common.bean.IdVO;
import co.legu.modules.common.bean.Result;
import co.legu.modules.pager.annotation.Pager;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * <p>
 * 工单 前端控制器
 * </p>
 */
@RestController
@RequestMapping("/api/mng/order/work-order")
public class WorkOrderController {
    @Autowired
    private IWorkOrderService workOrderService;


    /**
     * 添加
     *
     * @return 添加状态
     */
    @PostMapping("/add")
    public Result<?> add(@RequestBody @Valid WorkOrder add) {
        // TODO 添加前的校验

        // 默认值添加
        add.setId(IdWorker.getIdStr());
        // 添加数据
        boolean addResult = workOrderService.save(add);
        return Result.auto(addResult);
    }

    /**
     * 修改
     *
     * @return 修改状态
     */
    @PostMapping("/update")
    public Result<?> update(@RequestBody @Valid WorkOrder update) {
        // TODO 修改前的校验

        // TODO 默认值的添加

        // 修改数据
        boolean updResult = workOrderService.updateById(update);
        return Result.auto(updResult);
    }

    /**
     * 删除
     *
     * @param idVO
     * @return 删除状态
     */
    @PostMapping("/delete")
    public Result<?> delete(@RequestBody @Valid IdVO idVO) {
        // TODO 删除前的校验

        // 删除数据
        boolean delResult = workOrderService.removeById(idVO.getId());
        return Result.auto(delResult);
    }

    /**
     * 查询单个
     *
     * @return 单个实体
     */
    @GetMapping("/info")
    public Result<?> info(String id) {
        //查询
        var info = workOrderService.getById(id);
        return Result.success(info);
    }

    /**
     * 分页查询
     *
     * @return 分页后的实体
     */
    @Pager
    @GetMapping("/list")
    public Result<?> list() {
        //查询数据
        var list = workOrderService.lambdaQuery().list();
        return Result.success(list);
    }

}

